// 1. 引入模块
const mongoose = require('mongoose');

// 2. 连接数据库
const str = 'mongodb://127.0.0.1:27017/chenwei';
mongoose.connect(str, { useNewUrlParser: true });

// 3. 注册事件
mongoose.connection.on('open', () => {

    // 4. 创建文档结构对象
    // 可以一眼知道关于这个对象的字段有哪些描述(类似于表结构中的表头)
    // Schema  [ˈskimə]  关于一个集合的字段描述
    const Stars = mongoose.Schema({
        name: String,
        age: Number,
        hobby: Array,
        isMarry: Boolean,
        brith: Date
    })

    // 5. 创建真实的模型对象 - Model  一般代表数据的意思
    const StarsModel = mongoose.model('popstar', Stars);

    // 6. 更新数据 - 参数1: 查询条件，参数2: 新数据属性, 参数3: 回调函数
    // 单条数据更新
    // StarsModel.updateOne({ name: '古力娜扎' }, { isMarry: false }, (err, data) => {
    //     if (err) throw err;

    //     console.log('更新成功：', data);
    //     mongoose.connection.close();
    // })

    // 6.1 多条数据更新 - 参数1: 查询条件，参数2: 新数据属性, 参数3: 回调函数
    const filter = { age: { $lt: 30 } };
    // 如果有新的字段是无法直接添加的 - 需要按照约定的结构来
    // const updateData = { isMarry: false, isOk: 'ok' } // X  Ok 添加不了
    const updateData = { isMarry: false }
    StarsModel.updateMany(filter, updateData, (err, data) => {
        if (err) throw err;

        console.log('批量更新成功：', data);
        mongoose.connection.close();
    })

})
// 处理失败的事件
mongoose.connection.on('error', () => {

})